feat(examples): add p/moul/ulist/lplist (layered proxy list)#3413
Merged
feat(examples): add p/moul/ulist/lplist (layered proxy list)#3413
Conversation
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Collaborator
🛠 PR Checks SummaryAll Automated Checks passed. ✅ Manual Checks (for Reviewers):
Read More🤖 This bot helps streamline PR reviews by verifying automated checks and providing guidance for contributors and reviewers. ✅ Automated Checks (for Contributors):No automated checks match this pull request. ☑️ Contributor Actions:
☑️ Reviewer Actions:
📚 Resources:Debug
|
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Codecov ReportAll modified and coverable lines are covered by tests ✅ 📢 Thoughts on this report? Let us know! |
leohhhn
approved these changes
Mar 12, 2025
matijamarjanovic
added a commit
to matijamarjanovic/gno
that referenced
this pull request
Mar 17, 2025
commit b2d157ecb62f5a0ed12e6dea6f66b1cb3606baa5
Merge: d2a32396 ec866301
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Mon Mar 17 23:29:46 2025 +0100
Merge branch 'master' into feat/token-hub
commit d2a32396655e7ae3a9d1de115c3b431a5b602af5
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Mon Mar 17 23:16:26 2025 +0100
- remove unneeded comment
- render touchups for better code readability & efficency
- rm unneccessart back to home links bc of existance of breadcrumb
commit 6e0a23305cb97daf8e0de5078a4cb2a96cb199cd
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Mon Mar 17 23:02:44 2025 +0100
update the realm with non-depricated version of namespace registry r/sys/users
commit ec866301dd3ba0d6171213cc59eb09c9e86f07e0
Author: Jeff Thompson <jeff@thefirst.org>
Date: Mon Mar 17 16:44:56 2025 +0100
fix: stdlibs/os: func Sleep doesn't return a value (#3957)
Running `make test.components` gives the error:
```
testing/testing.gno:6:2: could not import os (os/os.gno:24:9: sleep(int64(duration)) (no value) used as value) (code=4)
```
To fix: PR https://github.com/gnolang/gno/pull/3677 added the [Sleep
function](https://github.com/gnolang/gno/blob/5e017a4e7d89827203c11c6642f844f0fd75a070/gnovm/tests/stdlibs/os/os.gno#L23-L25):
```
func Sleep(duration time.Duration) {
return sleep(int64(duration))
}
```
But `sleep` doesn't return a value. This PR removes `return`.
Signed-off-by: Jeff Thompson <jeff@thefirst.org>
commit 5e017a4e7d89827203c11c6642f844f0fd75a070
Author: Lee ByeongJun <lbj199874@gmail.com>
Date: Sat Mar 15 02:29:32 2025 +0900
feat(cmd): `gno mod` module name validations (#3526)
closes #3493
Added module path validation to prevent invalid characters from being
written to `gno mod` parsing phase.
The validation:
1. Checks for non-ASCII characters
2. Validates against specific invalid characters (``, ", \, ?, *, :, <,
>, |, [, ]`)
3. Prevents spaces and control characters
4. Ensures the module path is not empty
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit a53c05d4f4bc4f7ed55fd9f078adbab35c4ce12c
Author: Rémi BARBERO <d4ryl00@gmail.com>
Date: Fri Mar 14 17:47:57 2025 +0100
feat: refactor r/gnoland/valopers to remove `r/sys/validators` dependency (#3830)
fixes https://github.com/gnolang/gno/issues/3567
Objectives:
- [x] The `/r/gnoland/valopers` should not have the dependency on
`/r/sys/validators`. So a new realm will do the glue between the
`valopers` realm and the `validators` valset.
- [x] remove dependency
- [x] write glue contract
- [x] write glue contract tests
- [x] As an admin, I can edit the instructions to register a new
valoper, espacially for what to put in the description field. So a
public function is needed to update the instructions and an
administration mechanism to restrict calls.
- [x] Change the API to be able to call valopers' functions directly
with a JS frontend (Connect, Adena), in one call. So we have to only use
primitive types on parameters and remove objects. We also have to create
new functions to update valopers for the desired fields.
- [x] Make functions more robust by implementing parameter validation.
- [x] Add protection on update functions so only the original caller can
update its valoper.
- [x] Prevent SPAM by the need of sending coins when you want to
register as a valoper.
- [x] Enhance the Render function with a pagination feature.
Process to be a validator:
1) Register your validator node as a `Valoper` with the
`r/gnolang/valopers.Register` function. Follow the instructions set in
the `Instructions` global variable (to be done).
2) When you think your valoper is ready, make a GovDao proposal to add
it to the validator valset with
`/r/gnoland/valopers_proposal.MakeProposal`.
In local environment, the two steps can be done by:
```
gnokey maketx call \
-pkgpath "gno.land/r/gnoland/valopers" \
-func "Register" \
-gas-fee 1000000ugnot \
-gas-wanted 30000000 \
-send "20000000ugnot" \
-broadcast \
-chainid "dev" \
-args "berty" \
-args "Berty's validator description" \
-args "g1ut590acnamvhkrh4qz6dz9zt9e3hyu499u0gvl" \
-args "gpub1pgfj7ard9eg82cjtv4u4xetrwqer2dntxyfzxz3pq0skzdkmzu0r9h6gny6eg8c9dc303xrrudee6z4he4y7cs5rnjwmyf40yaj" \
-remote "tcp://127.0.0.1:26657" \
test1
gnokey maketx call \
-pkgpath "gno.land/r/gnoland/valopers_proposal" \
-func "ProposeNewValidator" \
-gas-fee 1000000ugnot \
-gas-wanted 20000000 \
-send "100000000ugnot" \
-broadcast \
-chainid "dev" \
-args "g1ut590acnamvhkrh4qz6dz9zt9e3hyu499u0gvl" \
-remote "tcp://127.0.0.1:26657" \
test1
```
---------
Signed-off-by: D4ryl00 <d4ryl00@gmail.com>
Signed-off-by: Jeff Thompson <jeff@thefirst.org>
Co-authored-by: Jeff Thompson <jeff@thefirst.org>
Co-authored-by: Miloš Živković <milos.zivkovic@tendermint.com>
commit b6c55248760c3b23b807171352bfdcc04168026a
Author: julienrbrt <julien@rbrt.fr>
Date: Fri Mar 14 12:57:59 2025 +0100
refactor(vm): use expected keeper interface (#3935)
The goal of this PR is to prepare making more usable the GnoVM by
potentially other chains.
This follow the pattern that exists in the Cosmos SDK
(https://github.com/cosmos/cosmos-sdk/blob/v0.52.0-beta.2/x/gov/types/expected_keepers.go)
and that is being used in this repo as well:
https://github.com/julienrbrt/gno/blob/71fbdef783b5d72ca603ed45b8fb10434ca0ab11/tm2/pkg/sdk/auth/types.go#L23.
commit d677c2f526eecff89af3952782579f26913028fe
Author: Morgan <morgan@morganbaz.com>
Date: Thu Mar 13 17:36:40 2025 +0100
feat(gnovm): implement import rules for non-obvious identifiers (#3920)
This PR implements the rules for importing packages that don't match the
last element of their import path, with rules like those specified in
https://github.com/gnolang/gno/issues/3730#issuecomment-2704490872 .
Closes #3730.
commit ec3d51aef2104fa9f4a19d16492155e8d66eb611
Author: Alexis Colin <alexis@jaunebleu.co>
Date: Thu Mar 13 23:23:00 2025 +0900
style: fix sublist margin (#3934)
Simple PR to improve the margin balance between list and sublist in
gnoweb render.
cc @leohhhn

commit c48c59bd608dfb36b60a354bf2e2551cbc2c16ca
Author: Manfred Touron <94029+moul@users.noreply.github.com>
Date: Wed Mar 12 15:07:35 2025 +0100
feat(examples): add p/moul/ulist/lplist (layered proxy list) (#3413)
Add a layered proxy list (for `ulist.IList`) for upgrade patterns.
Depends on #3407
---------
Signed-off-by: moul <94029+moul@users.noreply.github.com>
commit e0c414833602c51dbb0022b7b477018215b6ad26
Merge: 3149275d 52bd2024
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Tue Mar 11 18:46:15 2025 +0100
Merge branch 'master' into feat/token-hub
commit 52bd2024116627b5f40ded8fc822273e521fba2b
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Tue Mar 11 18:19:05 2025 +0100
feat(r/docs): using `r/sys/users` (#3914)
Adds a simple example on how to resolve names and addresses using the
new user registry system. Also needed for a blog post.
commit 5cb216049bc57d312e0855572b839dbab8770f41
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Tue Mar 11 17:48:45 2025 +0100
fix: user registry changes (#3905)
Making a few minor changes on the user registry realms.
commit f71549e3bd905b0325b939db5c18f3b9d0949f92
Author: Morgan <morgan@morganbaz.com>
Date: Tue Mar 11 17:15:26 2025 +0100
feat(examples): add gno.land/{p,r}/morgan/chess (#3911)
Quite incredible, I agree.
Includes a small fix on the preprocessor to make everything work. :tada:
commit 8e04368f7266af43bcceb9a0e077955bfc7d2973
Author: Jeff Thompson <jeff@thefirst.org>
Date: Tue Mar 11 16:09:12 2025 +0100
fix(pkg/doc): include Consts and Vars of the type in JSON (#3912)
This is a follow-on to the vm/qdoc PR
https://github.com/gnolang/gno/pull/3459 . We already handle the case
where the AST lists type constructors as part of the Type description.
We also need to handle the case where consts and vars of the type are
listed as part of the Type description (not in the main Consts and Vars
sections). See the [updated lines in the hello
test](https://github.com/gnolang/gno/blob/a693cd5146591261f90956e1899f5460d39535bc/gnovm/pkg/doc/testdata/integ/hello/hello.gno#L14-L18).
```
var myStructPtr *myStruct
myStructConst *myStruct = &myStruct{a: 1000}
```
For these values to appear in the vm/qdoc result, this PR fix is needed.
We also fix an oversight in the `JSONField` struct to add the json field
names.
---------
Signed-off-by: Jeff Thompson <jeff@thefirst.org>
commit 202c867f1d16ef07765971c7f47fd62d1bd7ddc1
Author: Rémi BARBERO <d4ryl00@gmail.com>
Date: Tue Mar 11 15:02:44 2025 +0100
fix(examples): a p/moul/authz.ContractAuthority could execute multiple actions (#3913)
There was a once.Once object that prevented one action to be executed
twice by the ContractAuthority handler. But it also prevented the
ContractAuthority from executing any other actions.
The fix was to link the once.Once object to the action, not to the
ContractAuthority.
A test has also been added to test the case.
---------
Signed-off-by: D4ryl00 <d4ryl00@gmail.com>
Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
commit 6b6bbd3cefd5dc320e5d04571f26a62e134c79e4
Author: Manfred Touron <94029+moul@users.noreply.github.com>
Date: Tue Mar 11 14:42:00 2025 +0100
chore(examples): move r/demo/markdown_test to r/docs/markdown + update content (#3909)
once merged, we should take the habit of updating it when we extend
gnoweb's rendering capabilities such as in #3763
---------
Signed-off-by: moul <94029+moul@users.noreply.github.com>
commit 1d125428842c0656cd5909305025d78ef3731701
Author: Mustapha <102119509+mous1985@users.noreply.github.com>
Date: Tue Mar 11 11:10:32 2025 +0100
fix(gnoweb): footer logo link to navigate to home page (#3907)
This PR is to add "/" to the `href` attribute so the logo correctly
links to the home page.
Co-authored-by: mous1985 <mustapha.benazzouz@outlok.fr>
commit 803ab8c6afbcfed24c17d40e6ac1210c8d7bf028
Author: Miguel Victoria Villaquiran <miguelvicvil@gmail.com>
Date: Mon Mar 10 23:03:15 2025 +0100
chore: remove All nativeType and nativeValues (#3677)
Closes #1361
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit 42019f23590c78714401cdd010832bdb12c075d6
Author: Alex Gherasie <68433935+agherasie@users.noreply.github.com>
Date: Tue Mar 11 03:10:59 2025 +0900
feat(examples): add {p,r}/agherasie/forms (#3524)
Sorry for the long hiatus which caused #2604 to close, I moved to South
Korea this year for a university exchange program and let this PR
collect dust for a while.
I've addressed
https://github.com/gnolang/gno/pull/2604#discussion_r1787776352 in
https://github.com/gnolang/gno/commit/7a6a03235e1a615d2fa942294ac625a170de6ba9,
hoping that the PR might be ready for merge now !
If not, please let me know if any further updates should be made to the
code !
---
As part of the student contributor program, I attempted to create a new
example realm that allows the creation and submission of forms on gno !
- **Form Creation**: Create new forms with specified titles,
descriptions, and fields.
`CreateForm(...)`
- **Form Submission**: Submit answers to forms.
`SubmitForm(...)`
- **Form Retrieval**: Retrieve existing forms and their submissions.
`GetForms(...), GetFormByID(...), GetAnswer(...)`
- **Form Deadline**: Set a precise time range during which a form can be
interacted with.
The system supports the following field types:
type|example
-|-
string|`{"label": "Name", "fieldType": "string", "required": true}`
number|`{"label": "Age", "fieldType": "number", "required": true}`
boolean|`{"label": "Is Student?", "fieldType": "boolean", "required":
false}`
choice|`{"label": "Favorite Food", "fieldType":
"[Pizza|Schnitzel|Burger]", "required": true}`
multi-choice|`{"label": "Hobbies", "fieldType":
"{Reading|Swimming|Gaming}", "required": false}`
The external repo where the initial development took place and where you
can find the frontend is [here](https://github.com/agherasie/gno-forms).
The web app itself is hosted [here](https://gno-forms.netlify.app/)
And the most recent test4 version of the contract is
[forms2](https://test4.gno.land/r/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v/testing/forms2)
---
Screenshots :
<details>
<summary>
<a
href="https://test4.gno.land/r/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v/testing/forms2">gnoweb
Render()</a>
</summary>
<img width="941" alt="image"
src="https://github.com/user-attachments/assets/24b9c17d-b51e-4d0b-ab19-b9bca49c0a89">
</details>
<details>
<summary>
<a
href="https://gno-forms.netlify.app/results/0000002/g1w62226g8hykfmtuasvz80rdf0jl6phgxsphh5v">
a form response in the web interface
</a>
</summary>
<img width="539" alt="image"
src="https://github.com/user-attachments/assets/b3469545-842f-4030-a4da-1060802c6477">
</details>
<details>
<summary>
<a href="https://gno-forms.netlify.app/create">creating a form in the
web interface</a></summary>
<img width="564" alt="image"
src="https://github.com/user-attachments/assets/c6e16bd0-0523-47a7-bf09-b3dc7f5d9314">
</details>
---
<details><summary>Contributors' checklist...</summary>
- [X] Added new tests, or not needed, or not feasible
- [X] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [X] Updated the official documentation or not needed
- [X] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
---------
Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Co-authored-by: Guilhem Fanton <8671905+gfanton@users.noreply.github.com>
Co-authored-by: Nathan Toups <612924+n2p5@users.noreply.github.com>
Co-authored-by: Morgan <morgan@morganbaz.com>
commit b1685f0c8a13b287ca081536dbe87b2d0b30acfe
Author: Morgan <morgan@morganbaz.com>
Date: Mon Mar 10 17:04:14 2025 +0100
ci: reciprocally test gnovm and examples when they change (#3904)
\+ fix the underlying bug in cmd/gno that was causing the failure.
commit 460877725f02ae119caee119c25bb4f348f1e4ab
Author: Morgan <morgan@morganbaz.com>
Date: Mon Mar 10 16:35:33 2025 +0100
feat(cmd/gno): perform type checking before test (#3887)
Fixes #3831.
Adds type checking as a step before executing a package's tests.
commit b1fc6ac59e4be64bc8823ca165a5354ab504a4ac
Author: Alexis Colin <alexis@jaunebleu.co>
Date: Tue Mar 11 00:29:18 2025 +0900
feat: add assets.gnoteam.com to the CSP img-src whitelist (#3892)
In order to allow gnoteam images to be served through CSP, this PR adds
the dedicated domain https://assets.gnoteam.com/ to the rules. In
addition to https://gnolang.github.io/, which is used for the blog
system, gnoteam assets will also be used for general purposes, ensuring
secure and consistent asset delivery.
commit 0d5a7370e45d5c74d98cb5c419eb08e82f16c216
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Mon Mar 10 16:22:00 2025 +0100
fix: remove `r/demo/users` traces (#3896)
Master is red because CI didn't catch VM tests related to `r/demo/users`
in #3166
This PR fixes this and also fixes some other leftover occurrences of
`r/demo/users`.
cc @thehowl this is another `examples/` dep that should probably be
removed.
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit a37a07356b2e5fa84f45285bb506740a773ea8e4
Author: Petar Dambovaliev <petar.atanasov.1987@gmail.com>
Date: Sun Mar 9 15:42:12 2025 +0100
fix: interface to concrete type by T(ifaceVal) is not allowed (#3757)
Closes [3412](https://github.com/gnolang/gno/issues/3412)
commit 9b5dc9c7d60365c0c0823980d665a02708c53c49
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Sat Mar 8 12:25:15 2025 +0100
refactor: `r/demo/users` (#3166)
Addresses: #2827
This PR refactors the current `r/demo/users` & `r/sys/users` system in
accordance to the issue mentioned above. Below is the high-level
overview of the new system.
It also makes a small change to the `p/demo/releases` lib.
- Fully replaces `r/demo/users`
- Is the main entry point for users looking to register a name, create
an alias (rename themselves), or delete their username
- Implements allowed username pattern checks as per the issue #2827
- Is pausable by GovDAO, contains no other administration functionality
- Contains a nice UI/render for users (please suggest improvements) -
see bottom
- Uses `r/demo/profile` for displaying extra information about a user
(to be moved to `r/nt/profiles` or `r/gnoland/profiles`)
- @jaekwon's request: add payment in GNOT for registration ✅
- Namespace check moved to `r/sys/names`
- Contains the address/name <> user stores, to which only whitelisted
realms can write
- Contains resolver functions & other useful getters
- Is callable only by whitelisted realms, such as `r/gnoland/users/v1`,
etc.
- Whitelist is fully managed by GovDAO (after #3523 was resolved)
- Namespace checking functionality moved here (from `r/sys/users`),
added tests, as discussed with @moul
- ~Verify function now only upgradeable with a GovDAO prop instead of
previously being ownable~ verify func upgrateability removed, as we'll
just deploy a `r/sys/names/vX` when we need to, as discussed with @moul
- ~Verify functionality is now not pausable and on by default, as per
discussions with @moul. This means Portal Loop will need to be patched
upon merging this PR, as many txs will fail due to not having proper
namespace permissions.~ The namespace verify functionality is off by
default, but should be enabled in genesis via `r/sys/names.Enable()`.
The Portal Loop will indeed need to be patched if we enable this
functionality.
- Updated the VM keeper to call `r/sys/names` for the namespace check
instead of `r/sys/users`
- Updated params to load `r/sys/names`, which the keeper will call

Currently this is the "releases" page for the user registration systems
(example data):
<img width="1287" alt="Screenshot 2025-02-03 at 12 19 28"
src="https://github.com/user-attachments/assets/0407b21d-4457-48af-80f4-b0ef10649337"
/>
<details><summary>Contributors' checklist...</summary>
- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [x] Added references to related issues and PRs
- [x] Provided any useful hints for running manual tests
</details>
---------
Co-authored-by: Morgan <morgan@morganbaz.com>
Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
commit c68cbcce5f1d17918f2d7763d6b5d522ed046039
Author: Morgan <morgan@morganbaz.com>
Date: Fri Mar 7 18:21:17 2025 +0100
chore: fix master build (#3891)
commit ac5584b7872e11df3c53ae37fbc2092839a43fca
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Fri Mar 7 17:32:36 2025 +0100
feat(examples): `p/leon/pkgerr` (#3738)
Adds a simple package to make your Gno errors match your realm path.
Go wizards tell me if I'm doing something wrong 🙏
commit d24efa034173cb57168e27afdb3dcce4a07767fb
Author: Jae Kwon <53785+jaekwon@users.noreply.github.com>
Date: Fri Mar 7 07:17:48 2025 -0800
feat: lock token transfer and parameter module, take 2 (#3860)
This is a continuation of https://github.com/gnolang/gno/pull/3176.
It breaks the params struct into fields and stores them in
<module>:_:<fieldname>. All parameters are of the form <module>:<name>
or <module>:<realm/_/*>:<name>. A colon is used rather than a period/dot
because it's ambiguous with realm domains.
std.SetParam is realm-local only, limited and safe.
sys/params.SetSysParam is arbitrary and global. Need to make sure it's
only importable by r/sys/params, but I think we said we'd do this with
"internal" or something. Maybe for a followup PR.
The ParamsKeeper is divided into prefix spaces, `pk.WithModule("bank")`
for example, and that is passed into the BankKeeper, that way the
BankKeeper only has access to the bank:* param space. "language
capabilities" security. But the VMKeeper needs to the root ParamsKeeper
because it needs to be able to modify anything via r/sys/params.
I got rid of the .type suffix of param keys. It's less safe right now
but we can add type safety to this later. You *can* and *must* use the
type suffix from toml for certain types though; "strings" which
represent []strings must be suffixed by .strings, because toml only
gives []interface{}{}.
---------
Co-authored-by: piux2 <90544084+piux2@users.noreply.github.com>
Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
Co-authored-by: Morgan <morgan@morganbaz.com>
commit a5e084cc668cbd55eb324f2c8970b8e0aca2b584
Author: Morgan <morgan@morganbaz.com>
Date: Fri Mar 7 15:13:40 2025 +0100
feat(gnovm/tests/stdlibs): add `fmt` (#3847)
This PR removes `fmt` from being implemented using NativeValue /
NativeType, and implements a mostly pure-Gno implementation which uses
an initial, rudimentary implementation of Gno reflection for `fmt`.
This PR is ready for review, but some of its related work has been
broken out in separate PR to aid reviewing and create atomic PRs.
- Blocks #3677
- Relates to #1361
- Depends on #3861
- Depends on #3862
- Depends on #3875
The main addition is of this set of files, which comprises the bulk of
the added lines of this PR. Most of this is a copy of Go's `fmt`.
Changes are mostly in `errors.gno` and `format.gno` - the other files
are left mostly intact.
At the end of `print.gno`, there is an added section containing a set of
native functions which form the "reflection" needed to implement the
`fmt` package in a manner that is similar to Go's. The implementation is
not meant to be a public API and is meant to serve initially only for
usage by `fmt`; we can use this as sketch to then implement a proper
`reflect` package.
Attention in reviewing should mostly go to this `print.gno` and its
`print.go` counterpart, especially for any missed cases or potential
bugs.
Complementary to the above, to avoid some problems that were arising due
to the handling of os.Stdin, Stdout and Stderr, I also removed the
NativeValue / NativeType in `os` and replaced them with a native binding
alternative.
To avoid having both an `Output` and `ErrorOutput` on the machine, this
package supports an additional method on the `Machine.Output`,
`StderrWrite`, which is implemented by writers who wish to differentiate
between the two.
- `gnovm/pkg/test`
- added support for `StderrWrite` in its writers
- removed native values for `os` and `fmt`
- combine `stdin`, `stdout`, `stderr` into a single `output` parameter
in the related functions.
- `gnovm/pkg/gnolang`
- support testing `gnovm/tests/stdlibs`, by only testing stdlibs that
exist there and not in the official stdlibs.
- `gnovm/cmd/gno`
- fix tests which needed the `fmt` package.
- `gnovm/tests/files`
- most changed tests are result of the improved functionality of the
`fmt` package, allowing for instance to show declared types correctly.
- `gnovm/stdlibs/bufio`
- due to the removal of `os.Stdin`, this example had to be changed.
- `misc/genstd`
- added a flag `-skip-init-order` when creating it could cause problems,
like the testing stdlibs; fixed a bug when using `TypedValue`.
commit a36b8e6f9d770436a8e7b0b38b97aae21d04b9ce
Author: Antoine Eddi <5222525+aeddi@users.noreply.github.com>
Date: Fri Mar 7 14:54:24 2025 +0100
feat: add gnoweb codeowners (#3890)
This PR:
- add dismissed review state support to the bot:
https://github.com/gnolang/gno/pull/3890/commits/90cdc51cb5df295fac4e7a1d712f304a98a4e4af
(requested here:
https://github.com/gnolang/gno/issues/3238#issuecomment-2701523356)
- add gnoweb codeowners to the config:
https://github.com/gnolang/gno/pull/3890/commits/f0001ccf2891cab12607a4ee0d400354204a7731
(requested here:
https://github.com/gnolang/gno/issues/3238#issuecomment-2693794519)
Note: It might be cleaner in the future to create codeowner teams for
different parts of the codebase (e.g. a `gnoweb-codeowners` team for
`gfanton` and `alexiscolin`) rather than manually listing each user in
the config. Something to think about.
commit 01df7ebd04122725a62cf2e8cf536d7f3d426caf
Author: Morgan <morgan@morganbaz.com>
Date: Fri Mar 7 14:05:11 2025 +0100
fix(gnovm/pkg/test): use scoped store when running GetMemPackage (#3854)
Fixes #3240
One-line fix for realms not having independent states when tested
together.
commit f35bbf2669aab346e59f9b1f66aff3880f258f8f
Author: Jerónimo Albi <jeronimo.albi@gmail.com>
Date: Fri Mar 7 00:37:42 2025 +0100
feat(examples): add `p/jeronimoalbi/datastore` package (#3698)
The purpose of this package is to support a data store where multiple
collection based storages could be defined.
Each named storage defines a collection of records where each record can
optionally and by default have any number of user defined fields, which
can be constrained to a pre defined set of fields by using a schema
definition.
The implementation is a layer on top of `p/moul/collection`.
Example of `datastore` package usage:
```go
package main
import (
ds "gno.land/p/jeronimoalbi/datastore"
)
func main() {
var db ds.Datastore
// Define a unique case insensitive index for user emails
emailIdx := ds.NewIndex("email", func(r ds.Record) string {
return r.MustGet("email").(string)
}).Unique().CaseInsensitive()
// Create a new storage for user records
storage := db.CreateStorage("users", ds.WithIndex(emailIdx))
// Add a user with a single "email" field
u := storage.NewRecord()
u.Set("email", "foo@bar.org")
// Save to assing user ID and update index(es)
u.Save()
println("Records =", storage.Size())
// Find the user by email
print("Search by Email ... ")
record, found := storage.Get(emailIdx.Name(), "foo@bar.org")
if !found {
panic("record by email not found")
}
println("ID =", record.ID())
// Find user by ID
print("Search by ID ... ")
record, found = storage.GetByID(u.ID())
if !found {
panic("record by ID not found")
}
email := record.MustGet("email").(string)
println("Email =", email)
// Delete the user from the storage and update index(es)
storage.Delete(u.ID())
println("Records =", storage.Size())
}
// Output:
// Records = 1
// Search by Email ... ID = 1
// Search by ID ... Email = foo@bar.org
// Records = 0
```
commit b0b752c34f8af073cf57d97bed203e71790cfa21
Author: Manfred Touron <94029+moul@users.noreply.github.com>
Date: Fri Mar 7 00:37:00 2025 +0100
feat: docs v2 (#3868)
Continues #3855 by @leohhhn
The changes were great, and I kept most of the good content (thank you).
However, this PR slightly shifted the direction by making the `docs/`
folder more focused on GitHub, Markdown, and the project, rather than
Docusaurus, the website, or global documentation. In the future, we may
create a more comprehensive documentation website, but for now, we want
the `docs/` folder to be efficient and centered around the project.
Ideally, it should be the only resource we invest energy in. However, I
can easily envision supplementing it with external resources, such as
blog posts or another repository with non-project documentation.
Alternative view: https://github.com/leohhhn/gno/pull/2
- [x] Reorganize by personas (`builders/`, `users/`) and maintain a
`references/` section for metadata.
- [x] Remove items that do not belong in the `docs/` of this repository
(e.g., intro to blockchain).
- [x] Remove unusual numbers in titles, likely intended for Docusaurus.
- [x] Merge related content, such as combining `stdlibs/*` into
`stdlibs.md`.
- [x] Simplify `Makefile` and make it consistent with the other folders.
- [x] Simplify introduced `.github/workflows`.
- [x] Conduct a quick proofreading.
- [x] Fix links.
- [x] Removed docusaurus, can be discussed in an upcoming PR.
[1be1a3a](https://github.com/gnolang/gno/pull/3868/commits/1be1a3a388a252172f614d1bde8b6a90e5f799e4)
- [x] Removed content that should belong to somewhere else, such as
other README.md files.
---------
Signed-off-by: moul <94029+moul@users.noreply.github.com>
Co-authored-by: leohhhn <hudakleon@gmail.com>
Co-authored-by: sw360cab <sw360cab@gmail.com>
Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit 69af6e277173afce8cb6da7bc6e74a2f7645203d
Author: ltzmaxwell <ltz.maxwell@gmail.com>
Date: Thu Mar 6 23:04:36 2025 +0800
fix(gnovm): fix nil pointer deref for duplicate declarations (#3886)
close: #2763 .
This PR addresses the nil pointer issue, also fix the `redeclaration`
issue by @thehowl .
`filetest` is a special case, , `redeclaration` is still permitted in
filetest files(e.g. z_0_filetest, z_1_filetest...) for `convenience`.
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit f67adf25655282eaa56295f352fcac581bf3adb2
Author: Morgan <morgan@morganbaz.com>
Date: Thu Mar 6 15:42:56 2025 +0100
chore: remove typeval and other unused uverse vals (#3883)
commit f1d6210f0ab4936d15897d858fa7a2ac6a890054
Author: sunspirit <167175638+linhpn99@users.noreply.github.com>
Date: Thu Mar 6 18:39:11 2025 +0700
fix(tm2): Fix the endpoint /tx?hash= to make it work (#2518)
From issue : https://github.com/gnolang/gno/issues/2489
I found an issue with the code segment parsing arguments from the
request that did not support base64 encoding, so I implemented logic to
handle it. If there are any inconsistencies, please share the opinion

<!-- please provide a detailed description of the changes made in this
pull request. -->
<details><summary>Contributors' checklist...</summary>
- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
Co-authored-by: Miloš Živković <milos.zivkovic@tendermint.com>
commit 5b056d779ef74ed6fb4f9edc9e715be46d9d16a9
Author: Alexis Colin <alexis@jaunebleu.co>
Date: Thu Mar 6 20:15:39 2025 +0900
fix(gnoweb): breadcrumb generation for consistent argument and query handling (#3835)
This PR refactors the `generateBreadcrumbPaths` function to provide a
consistent model for handling breadcrumb parts extracted from the URL
path, arguments, and query parameters. The changes include:
- **Consistent Extraction of Parts:**
The existing logic that splits the URL path into parts remains
unchanged. However, the root (`p` / `r`) part is not clickable anymore
since we don't have any content here for now. It also fixes the HTML
list with proper ending tags and Aria attributes/elements.
- **New Argument Parts (ArgParts):**
Instead of storing all arguments as a single string, we now split the
url.Args value (i.e., the part after the `:`) into individual segments.
These segments are processed similarly to the path parts, with
cumulative URLs generated for each segment. This provides a more
granular and consistent breadcrumb structure.
- **Query Parameters Handling:**
Query parameters (after the `?`) are iterated over and added to a new
Queries slice. Since iterating over an empty map is safe, no additional
condition is required here.
- **Update query value on click from input:**
By clicking on the query from the breadcrumb, it becomes possible to
edit the value quickly.
- **Fixing breadcrumb special characters in the input box**
Enable `EncodeNoEscape` in the `EncodeURL` functions in order to remove
escaped chars.
<img width="907" alt="Capture d’écran 2025-03-04 à 23 50 16"
src="https://github.com/user-attachments/assets/7fb6c6a8-cc15-4caa-80e2-cd6eae20cea2"
/>
<img width="908" alt="Capture d’écran 2025-03-04 à 23 50 55"
src="https://github.com/user-attachments/assets/b9870915-e90a-4af1-b12e-bd387715e629"
/>
<img width="907" alt="Capture d’écran 2025-03-05 à 00 27 16"
src="https://github.com/user-attachments/assets/6ee3c9fb-a762-4c1c-bcd0-05e3278bb0f0"
/>
<img width="907" alt="Capture d’écran 2025-03-04 à 23 46 56"
src="https://github.com/user-attachments/assets/b5442c99-9259-4c45-8019-bc55e9e979aa"
/>
<img width="908" alt="Capture d’écran 2025-03-04 à 23 43 06"
src="https://github.com/user-attachments/assets/8e4f6002-fbc7-45d8-8e7c-23b394fd5108"
/>
<img width="908" alt="Capture d’écran 2025-03-04 à 23 43 30"
src="https://github.com/user-attachments/assets/e3194167-f65b-4806-90de-d2e7d32c60f1"
/>
<img width="907" alt="Capture d’écran 2025-03-05 à 01 05 20"
src="https://github.com/user-attachments/assets/fde2457c-081a-4c83-948a-ff125f10b60f"
/>
commit cbaaf392d511dd8fce6f885490be1038ff944fff
Author: Kazaï <149690535+kazai777@users.noreply.github.com>
Date: Wed Mar 5 17:55:22 2025 +0100
feat(examples): add `p/thox/{accesscontrol,timelock}` (#2307)
We have developed two packages: `accesscontrol` and `timelock` inspired
by openzeppelin contracts. These packages were created in collaboration
with @mous1985 , @DIGIX666 , and myself.
The `accesscontrol` package was primarily designed to support the
development of the `timelock` package, but it can also be used
independently for many other use cases.
The `accesscontrol` package provides a library for managing roles and
permissions within Gno. It allows for the creation, assignment, and
management of roles with specific administrative privileges, ensuring
that only authorized accounts can perform certain actions.
The `timelock` package offers a library for scheduling, canceling, and
executing time-locked operations in Gno. It ensures that operations are
only carried out after a specified delay and provides mechanisms to
manage and verify the status of these operations. The creation of the
`accesscontrol` package was necessary to provide role and permission
management required for the administrative tasks of `timelock`.
- Realm Administration Management: Create administrator roles to manage
realms and assign or revoke roles as needed.
- Role-Based Access Control (RBAC): Implement an RBAC system to control
who can access which resources and perform which actions within a Gno
dApp.
- Security and Compliance: Use roles to ensure that only authorized
individuals can perform critical actions, helping to meet security and
compliance regulations.
- Delayed Transactions: Schedule transactions or actions to be executed
at a specific future time.
- Asset Locking: Implement asset locking mechanisms where users must
wait for a certain period before they can access or move assets.
- Task Automation: Automate periodic or conditional tasks using specific
time delays.
These examples of use cases are not exhaustive, and many other things
are possible with these packages.
<!-- please provide a detailed description of the changes made in this
pull request. -->
<details><summary>Contributors' checklist...</summary>
- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
---------
Co-authored-by: théo dub <theodub@MacThox.local>
Co-authored-by: mous1985 <mustapha.benazzouz@outlook.fr>
Co-authored-by: Mustapha <102119509+mous1985@users.noreply.github.com>
Co-authored-by: deelawn <dboltz03@gmail.com>
Co-authored-by: Thox <90353329+DIGIX666@users.noreply.github.com>
Co-authored-by: DIGIX666 <digixit66@gmail.com>
Co-authored-by: Manfred Touron <94029+moul@users.noreply.github.com>
Co-authored-by: Morgan <git@howl.moe>
Co-authored-by: Morgan <morgan@morganbaz.com>
commit ac165805d84b804da3d5d4434cae0c193dee4e0e
Author: Morgan <morgan@morganbaz.com>
Date: Wed Mar 5 14:48:23 2025 +0100
feat(gnovm): improve interface/func/struct type `String` methods (#3875)
- only show the types in the parameters and results for functions,
matching go's reflect.Type.String
- match field list to go's
extracted from #3847.
This blocks https://github.com/gnolang/gno/pull/3847 because for
simplicity, we use the type String() methods for syntaxes like `%#v` and
`%T` which show the type. Making these match Go's avoids us modifying
some types, and I think it's a nice addition in making us more
consistent with Go.
commit b01689fd389dbb913e52dd2af16687097c6baf84
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Wed Mar 5 14:42:36 2025 +0100
fix(minisocial): reset pager upon reset (#3879)
The pager was not being reset upon post resetting the app.
commit 6f91a35f3fcb0da593a8b45f6b19d70865406e05
Author: Emmanuel T Odeke <emmanuel@orijtech.com>
Date: Tue Mar 4 18:56:19 2025 +0200
docs: improve go<>gno compat document searchability on complex numbers (#3852)
Imaginary values are not supported in Gno. Found by fuzzing and
compatibility checks between Go and Gno
```go
package main
const (
Nj = 0i
)
```
commit 4ac5fa48190b34cd83c786cebf8c4a3e3b991b2b
Author: Morgan <morgan@morganbaz.com>
Date: Tue Mar 4 17:47:21 2025 +0100
feat(gnovm): show stacktraces when recovering from a test (#3837)
This PR ensures that when we recover inside of testing.gno, we then
print also the resulting stracktrace, using a special function.
commit e344aca5b11ed9285fd8327b8026c70d8a6c9f31
Author: Morgan <morgan@morganbaz.com>
Date: Tue Mar 4 17:29:03 2025 +0100
fix(gnovm): handle calling method with value receiver on nil (#3861)
This used to return a weird panic, now it correctly panics with a nil
pointer dereference.
Extracted from #3847.
---------
Co-authored-by: ltzmaxwell <ltz.maxwell@gmail.com>
commit 1a9909485979d2e68741ea2a953f972820572a0c
Author: Marc Vertes <marc.vertes@tendermint.com>
Date: Tue Mar 4 16:22:01 2025 +0100
fix(gnovm): fix unary operator ^ on constants (#3876)
Apply Bigint.Not for untyped big ints.
Fixes #3864.
commit 253c766117187c42267ab9dda2edab10d75216d6
Author: ltzmaxwell <ltz.maxwell@gmail.com>
Date: Tue Mar 4 22:31:23 2025 +0800
fix(gnovm): correct const type deduction (#2948)
closes https://github.com/gnolang/gno/issues/2944 and #3863
<!-- please provide a detailed description of the changes made in this
pull request. -->
<details><summary>Contributors' checklist...</summary>
- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
commit 536ea5bcde41ab3d2d2fd43fef99855d7cb6f858
Author: grepsuzette <350354+grepsuzette@users.noreply.github.com>
Date: Tue Mar 4 03:26:07 2025 +0800
feat(examples): create /r/grepsuzette/home (#3652)
This is a home realm.
@michelleellen kindly asked me if I wanted to create a
r/grepsuzette/home so here it is :)
---------
Co-authored-by: grepsuzette <grepsuzette@users.noreply.github.com>
Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
commit 9cd5c0e35a97d4c569e1302fa877591448ddb54a
Author: Mustapha <102119509+mous1985@users.noreply.github.com>
Date: Mon Mar 3 20:20:13 2025 +0100
feat(example): `r/mouss` (#3472)
Hi Gnomes ,
This is my home page. it was difficult to be creative 😅 , so i did what
i can do
I put some informations about me

I'm passionate about cooking, so I've set up a page for those who want
to share their national culinary specialties or just their favorite
recipes, since there are so many nationalities in `gno` community.

feel free to add your recipes ;)

@leohhhn
---------
Co-authored-by: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Co-authored-by: mous1985 <mustapha.benazzouz@outlok.fr>
commit fc359eacc31bad937e7fa0d81df415839c734378
Author: Morgan <morgan@morganbaz.com>
Date: Mon Mar 3 16:33:28 2025 +0100
fix(gnovm): support len() on nil map (#3856)
This would panic at runtime due to a missed condition in
TypedValue.GetLength.
commit 6c20104594fc2a4db260834ef0b76503590a21e9
Author: Morgan <morgan@morganbaz.com>
Date: Mon Mar 3 15:57:24 2025 +0100
feat(gnovm): add `any` type (#3862)
This exists in Go, and it's a pain to add it later as a global, so
making a PR to add this.
extracted from #3847.
---------
Co-authored-by: ltzmaxwell <ltz.maxwell@gmail.com>
commit dc62b1888b5f8c68bb1cffa1a0185992fa328a51
Author: Manfred Touron <94029+moul@users.noreply.github.com>
Date: Sat Mar 1 13:03:38 2025 +0100
chore: improve error response structure and metadata (#3845)
Adds a `vm.version={version}` when the VM returns an error response.
Alternatively, we could simplify access to the version and other
metadata, possibly with a "gnokey maketx --debug" command. However, I
believe this addition is light enough to be included as a built-in
feature.
---------
Signed-off-by: moul <94029+moul@users.noreply.github.com>
commit 00ddf5516c0c5553c283ae9e2cab990f487b75bb
Author: Manfred Touron <94029+moul@users.noreply.github.com>
Date: Fri Feb 28 18:56:09 2025 +0100
chore: refactor gnoland/home (#3853)
- simplify
- make it more loop-friendly (PRs are easier)
- cleanup html and invalid markdown
- retained the current content to allow for PRs that focus on updating
it
---------
Signed-off-by: moul <94029+moul@users.noreply.github.com>
commit c06de0ac0c4f2c2445f5894396940f707153c002
Author: Alexis Colin <alexis@jaunebleu.co>
Date: Sat Mar 1 01:06:16 2025 +0900
fix(gnoweb): change 'docs' to 'actions', updates to menus (#3850)
This issue improves the user experience (UX) of GnoWeb by:
- Replacing `Docs` with `Actions` in the navigation bar.
If the goal was to provide documentation for the realm similar to what
[pkg.go.dev](https://pkg.go.dev/) offers (in conjunction with #3459),
that feature is not yet available and causes confusion.
- Updating navigation icons to make each entry more understandable.
- Promoting `Secure Mode` in the Helper page.
Secure Mode is now enabled by default instead of Fast Mode, which
currently displays a security message.
- Replacing X with Twitter in the footer navigation.
- Removing `Actions` (current Docs menu) for `/p` contents.
<img width="1724" alt="Capture d’écran 2025-02-28 à 17 32 42"
src="https://github.com/user-attachments/assets/78afd15f-0ec6-4c47-882e-e22e5578cb62"
/>
commit e352770149c631c529e380ba2cdfe785878ff629
Author: grepsuzette <350354+grepsuzette@users.noreply.github.com>
Date: Fri Feb 28 19:14:52 2025 +0800
fix(amino): panic when registering types with the same name (#2325)
This adds some doc and tests to `tm2/pkg/amino` to address the following
in amino_test.go:
fixed #2326
`// XXX Test registering duplicate names or concrete types not in a
package.`
- **chore(docs): document frequent functions in tm2/pkg/amino**
- **chore(amino): add some tests**
```
cd tm2/pkg/amino
go test -v --run=WithPanic\$
```
Tests have uncovered a potential bug however in `TestDupNamesMustPanic`.
Opening an issue now to document this, with a possible fix.
```go
// The following does NOT panic, but it should.
// assert.Panics(t, func() {
// myPkg.WithTypes(
// tests.EmptyStruct{}, "A",
// tests.PrimitivesStruct{}, "B",
// tests.ShortArraysStruct{}, "A", // Same name
// )
// })
```
<details><summary>Contributors' checklist...</summary>
- [x] Added new tests, or not needed, or not feasible
- [x] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [x] Updated the official documentation or not needed
- [x] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [x] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
---------
Co-authored-by: grepsuzette <grepsuzette@users.noreply.github.com>
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit f4324fb34674a880b1d663c5e01e9c00750a8355
Author: Jeff Thompson <jeff@thefirst.org>
Date: Fri Feb 28 11:28:12 2025 +0100
feat: Add vm/qdoc with function comments (#3459)
Addresses
https://github.com/gnolang/gno/issues/522#issuecomment-2528693327
by adding a query for `vm/qdoc` that uses a similar code path to `gno
doc` which includes comments.
For example, `gnokey query vm/qdoc -data
"gno.land/r/gnoland/valopers/v2" -remote tcp://127.0.0.1:26657` returns
the following JSON doc for
[valopers](https://github.com/gnolang/gno/blob/master/examples/gno.land/r/gnoland/valopers/v2/valopers.gno).
```
{
"package_path": "gno.land/r/gnoland/valopers/v2",
"package_line": "package valopers // import \"valopers\"",
"package_doc": "Package valopers is designed around the permissionless lifecycle of valoper profiles. It also includes parts designed for govdao to propose valset changes based on registered valopers.\n",
"values": [
{
"signature": "const (\n\terrValoperExists = \"valoper already exists\"\n\terrValoperMissing = \"valoper does not exist\" // Valoper is missing\n\terrInvalidAddressUpdate = \"valoper updated address exists\"\n\terrValoperNotCaller = \"valoper is not the caller\"\n)",
"const": true,
"values": [
{
"name": "errValoperExists",
"doc": "",
"type": ""
},
{
"name": "errValoperMissing",
"doc": "",
"type": ""
},
{
"name": "errInvalidAddressUpdate",
"doc": "",
"type": ""
},
{
"name": "errValoperNotCaller",
"doc": "",
"type": ""
}
],
"doc": ""
},
{
"signature": "var valopers *avl.Tree // Address -> Valoper\n",
"const": false,
"values": [
{
"name": "valopers",
"doc": "// Address -> Valoper\n",
"type": "*avl.Tree"
}
],
"doc": "valopers keeps track of all the active validator operators\n"
}
],
"funcs": [
{
"type": "",
"name": "GovDAOProposal",
"signature": "func GovDAOProposal(address std.Address)",
"doc": "GovDAOProposal creates a proposal to the GovDAO for adding the given valoper to the validator set. This function is meant to serve as a helper for generating the govdao proposal\n",
"params": [
{
"Name": "address",
"Type": "std.Address"
}
],
"results": []
},
{
"type": "",
"name": "Register",
"signature": "func Register(v Valoper)",
"doc": "Register registers a new valoper\n",
"params": [
{
"Name": "v",
"Type": "Valoper"
}
],
"results": []
},
{
"type": "",
"name": "Render",
"signature": "func Render(_ string) string",
"doc": "Render renders the current valoper set\n",
"params": [
{
"Name": "_",
"Type": "string"
}
],
"results": [
{
"Name": "",
"Type": "string"
}
]
},
{
"type": "",
"name": "Update",
"signature": "func Update(address std.Address, v Valoper)",
"doc": "Update updates an existing valoper\n",
"params": [
{
"Name": "address",
"Type": "std.Address"
},
{
"Name": "v",
"Type": "Valoper"
}
],
"results": []
},
{
"type": "",
"name": "init",
"signature": "func init()",
"doc": "",
"params": [],
"results": []
},
{
"type": "",
"name": "isValoper",
"signature": "func isValoper(address std.Address) bool",
"doc": "isValoper checks if the valoper exists\n",
"params": [
{
"Name": "address",
"Type": "std.Address"
}
],
"results": [
{
"Name": "",
"Type": "bool"
}
]
},
{
"type": "",
"name": "GetByAddr",
"signature": "func GetByAddr(address std.Address) Valoper",
"doc": "GetByAddr fetches the valoper using the address, if present\n",
"params": [
{
"Name": "address",
"Type": "std.Address"
}
],
"results": [
{
"Name": "",
"Type": "Valoper"
}
]
},
{
"type": "Valoper",
"name": "Render",
"signature": "func (v Valoper) Render() string",
"doc": "Render renders a single valoper with their information\n",
"params": [],
"results": [
{
"Name": "",
"Type": "string"
}
]
}
],
"types": [
{
"name": "Valoper",
"signature": "type Valoper struct {\n\tName string // the display name of the valoper\n\tMoniker string // the moniker of the valoper\n\tDescription string // the description of the valoper\n\n\tAddress std.Address // The bech32 gno address of the validator\n\tPubKey string // the bech32 public key of the validator\n\tP2PAddresses []string // the publicly reachable P2P addresses of the validator\n\tActive bool // flag indicating if the valoper is active\n}",
"doc": "Valoper represents a validator operator profile\n"
}
]
}
```
---------
Signed-off-by: Jeff Thompson <jeff@thefirst.org>
Signed-off-by: D4ryl00 <d4ryl00@gmail.com>
Co-authored-by: D4ryl00 <d4ryl00@gmail.com>
Co-authored-by: Morgan <morgan@morganbaz.com>
commit 9d1fbf542ae88ec3d14decf05c5d0e3ce25bc2a5
Author: Petar Dambovaliev <petar.atanasov.1987@gmail.com>
Date: Fri Feb 28 11:17:07 2025 +0100
fix: check interface convertable and print safe nil (#3843)
Closes [3768](https://github.com/gnolang/gno/issues/3768), closes
[3758](https://github.com/gnolang/gno/issues/3758)
---------
Co-authored-by: Morgan Bazalgette <morgan@morganbaz.com>
commit 17f44dcc1cadb1179882525a3968cf7ad35352f7
Author: ltzmaxwell <ltz.maxwell@gmail.com>
Date: Fri Feb 28 00:26:12 2025 +0800
fix(gnovm): remove readonly flag (#3840)
closes: #3800 . see comments below.
commit 3149275d30e2e6e4976b86161c895253a2cf34f5
Merge: 6843b35e d1db75eb
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Thu Feb 27 15:14:40 2025 +0100
Merge branch 'master' into feat/token-hub
commit 6843b35e40e8705adb68c2c50653359365e71dd6
Merge: 0704227f d7ce1691
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Wed Feb 26 23:51:23 2025 +0100
Merge branch 'master' into feat/token-hub
commit 0704227ff6bc01ef4026d72f9ddaa4cc4a3cae9b
Merge: e8c1150a 3288fe82
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Tue Feb 25 15:36:03 2025 +0100
Merge branch 'master' into feat/token-hub
commit e8c1150ae18b5e1a78cf372475ad6581caea355c
Merge: 15341be0 85b3c0b7
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Sat Feb 22 14:15:53 2025 +0100
Merge branch 'master' into feat/token-hub
commit 15341be041e52f61c2bdccb9dca25f68bf4f24c6
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Feb 20 16:17:25 2025 +0100
update grc20 reg
commit 83174f8d5976d9b62fae9ef07a178650b4ab3997
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Feb 20 16:15:05 2025 +0100
update with new names from 0a239e1ec444916260c400324ccb66fc02f01bc2
commit 76a1d9641ffab774e347e26e69b32644fa2629cb
Merge: 947a4565 b04ca6c5
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Thu Feb 20 16:12:30 2025 +0100
Merge branch 'master' into feat/token-hub
commit 947a4565fbd7f104bc7de3200e96ac0a53dbeeaf
Merge: 05982b27 d7e18a22
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Tue Feb 18 22:57:14 2025 +0100
Merge branch 'master' into feat/token-hub
commit 05982b273f83e15cc8154d7d9526dea3d28d5ee7
Merge: 272e0657 91300636
Author: matija marjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Mon Feb 17 14:38:55 2025 +0100
Merge branch 'master' into feat/token-hub
commit 272e065718dec2b5994d67f5f12faa0b0aaae90a
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Sat Feb 15 18:53:07 2025 +0100
replace wrong name
commit 971170e47e13983b00b60126fee421c10c9b4790
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Sat Feb 15 17:08:30 2025 +0100
add getalltokenswithdetails
commit 616130103388cf63d30c90f915aeaf24f164b4a2
Merge: 997eeeab fcd0e04e
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Sat Feb 15 17:02:01 2025 +0100
Merge branch 'feat/token-hub' of https://github.com/matijamarjanovic/gno into feat/token-hub
commit 997eeeab6b966b26f51a54851e7b67443d12c6b3
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Sat Feb 15 17:01:59 2025 +0100
add get all tokens with info
commit fcd0e04ed68cd3dee6090174e5fb4b3f9c82e83b
Merge: f3b4f2b4 9884ba10
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Sat Feb 15 16:58:42 2025 +0100
Merge branch 'master' into feat/token-hub
commit f3b4f2b44c89c089b19b6a41e8d8bd256d2c8fd6
Merge: bd108006 2e491411
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Fri Feb 14 00:04:03 2025 +0100
Merge branch 'master' into feat/token-hub
commit bd1080066da593e57996d4ac5e41ff28511491a2
Merge: beca6637 d0201fb3
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Wed Feb 12 11:36:54 2025 +0100
Merge branch 'master' into feat/token-hub
commit beca66374d5d6c0ed874abf52494dd96aa0e79fd
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Wed Feb 12 10:54:41 2025 +0100
replace paths for tokenhub
commit 7028ad3942308fefe49aac3e66e13deffbf9fbd7
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Wed Feb 12 00:22:43 2025 +0100
run make test.sync in examples
commit 5918dd56e161344760d30ca6119c287a79ffb4c5
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Wed Feb 12 00:13:27 2025 +0100
fix test?
commit 2675fc06c69e5cf063fb738697760990e56cce9d
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Wed Feb 12 00:04:33 2025 +0100
fix tests
commit 5fa00c8981274982bd3fdb55916707557325142a
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:58:28 2025 +0100
move tokenhub back to my namespace
commit 3f32a329f53c1be59787489d1dd2243cc6be38f1
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:57:46 2025 +0100
fix formatting
commit edd676b9e78661d41211205e34269f0e223e6863
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:53:53 2025 +0100
simplify logic
commit 9ee19b1124300debd7b97211125e78da0769200e
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:47:58 2025 +0100
fix formatting, remove new lines
commit 2a2a02910b4e953f52a313d51cff0dcaeb7377d7
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:44:34 2025 +0100
fix links
commit b9580c804b60e2f1035390149074c3dfdbea078c
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:37:23 2025 +0100
add renderFooter
commit 13d327c6b6aba9d1f480f297be3602ba97a53a33
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 11 23:31:58 2025 +0100
don't export renders. move consts to render.gno
commit f64687cbd30c3fb8d75a08c536f1ced23b7c5b2e
Merge: 0db4ec89 31fcf6aa
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Mon Feb 10 22:52:40 2025 +0100
Merge branch 'master' into feat/token-hub
commit 0db4ec89832c680af165b076a31b865ae4ba5a55
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Feb 6 18:23:25 2025 +0100
try and fix tsts
commit ecd1b522a3327255c3d27774356f9fa70706b54d
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Feb 6 17:05:32 2025 +0100
fix fmt
commit 7bcf274882b2c6c77b8205c5fa61ec02ee8f275b
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Feb 6 17:02:13 2025 +0100
add tests for getters
commit 0bf538896d541d7a3921f110afb2fc854ef869d7
Merge: e70b81a0 a01a030a
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Thu Feb 6 16:54:52 2025 +0100
Merge branch 'master' into feat/token-hub
commit e70b81a0da35c4933a6f9d44c165f95b89e60ee5
Merge: 50305aad 0b76b0b0
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Wed Feb 5 20:30:24 2025 +0100
Merge branch 'master' into feat/token-hub
commit 50305aad6ceb60431969a4c6566d90c5aa021543
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Feb 4 18:15:44 2025 +0100
add hof registration
commit d09eebcff97fdfd8bf58e3963103d33aa659d606
Merge: 403efc5c 85a8740b
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Tue Feb 4 14:54:01 2025 +0100
Merge branch 'master' into feat/token-hub
commit 403efc5c43de89e5415750d7962984ae26a32a61
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Fri Jan 31 02:22:17 2025 +0100
fix tests
commit 1c3b939b47dc7f86d6809441cbcfcf41ad18f719
Merge: cbfe5979 57da3243
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Fri Jan 31 02:05:03 2025 +0100
Merge branch 'master' into feat/token-hub
commit cbfe597988cc117d0130991b17cba9516a6d35b2
Merge: baeadcb7 a885c78d
Author: Leon Hudak <33522493+leohhhn@users.noreply.github.com>
Date: Tue Jan 28 23:08:08 2025 +0100
Merge branch 'master' into feat/token-hub
commit baeadcb795d898119d0b1ad40dda390fea482f9b
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Jan 23 19:55:42 2025 +0100
remove files
commit 7c5c2a72f996b7b12a10a1088b7406ce5a69fd4b
Merge: 13e4992c dabdf613
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Jan 23 19:55:03 2025 +0100
Merge branch 'feat/token-hub' of https://github.com/matijamarjanovic/gno into feat/token-hub
commit 13e4992c6a099119b1d2eabbf4eb1a0b72e55548
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Thu Jan 23 19:54:47 2025 +0100
-move token hub to r/demo
-adapt grc20reg to use the right key
commit dabdf613fbb56857b18dfe9532a692e7e8e913c3
Merge: 8d85cf13 8e1c5328
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Thu Jan 23 19:54:04 2025 +0100
Merge branch 'master' into feat/token-hub
commit 8d85cf13f211d2d34d6a65d007f174b64561a897
Merge: 0adea0ec fd244862
Author: matijamarjanovic <93043005+matijamarjanovic@users.noreply.github.com>
Date: Thu Jan 23 18:14:25 2025 +0100
Merge branch 'master' into feat/token-hub
commit 0adea0ec8955b9c33e518ba74423ee89ce7d6264
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Wed Jan 22 14:38:01 2025 +0100
set page size to 10
commit 1e0f60c4cbcaba2fb6cf32345b8dde30b98334fc
Author: matijamarjanovic <mmarjanovic11121rn@raf.rs>
Date: Tue Jan 21 21:40:50 2025 +0100
fix fmt again
commit 7be1…
stefann-01
pushed a commit
to stefann-01/gno
that referenced
this pull request
Mar 19, 2025
…#3413) Add a layered proxy list (for `ulist.IList`) for upgrade patterns. Depends on gnolang#3407 --------- Signed-off-by: moul <94029+moul@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a layered proxy list (for
ulist.IList) for upgrade patterns.Depends on #3407